Complex computer systems running complex applications often suffer from errors and sometimes become unresponsive to incoming requests. Typically, there are no log files that could be used for detecting and diagnosing what caused the problem and where it is located. In general, no log files are written to provide information about unresponsive computer systems. One of the ways to investigate what causes the problem is to analyze process snapshots, e.g., heap dumps, thread dumps. By definition, dumps contain the recorded state of a computer system at a specific time, usually when it encounters a problem.
A dump file or data structure holds execution data about programs running in the computer system at a particular moment. Execution data typically includes call-stacks for one or more process threads. Call-stacks are dynamic stack data structures that store or trace information about active subroutines of a computer program. One of the purposes of call-stacks is to keep track of the point where each active subroutine should return control when it finishes executing. Usually, there is one call-stack corresponding to one running thread of a running computer process. Call-stacks may include information about program objects executing or invoking subroutines or methods.
Generally, a thread dump provides execution data for each thread that is running at a particular moment, including the call-stacks of active subroutines for each thread. When a computer system does not respond to requests, the problem can often be due to deadlocks or lack of resources of an application server, e.g. database connections, etc. The nature of the problem could be inferred by the subroutines or actions currently executed by the threads of the running processes in the application server. In an enterprise environment, an application server could execute hundreds and even thousands of threads simultaneously with hundreds of thousands active subroutines. Analyzing such a large amount of execution data in order to identify the problem causing the lack of response to requests can be a cumbersome task.